本发明公开了一种基于异步唤醒调度的无线传感器网络数据采集方法。数据采集是无线传感器网络的主要数据传输方式,减少数据包从传感节点到基站的采集延时对提升无线传感器网络性能具有重要意义。现有减少采集延时的方法均需要全网同步,全网同步会引入很大的能量开销,而且不利于大规模组网。本发明通过维护邻居节点的唤醒调度信息来获知邻居节点的唤醒时间,并根据邻居节点的唤醒时间进行动态路由选择。该方法有效减少采集延时且不需要增加额外的同步开销,同时具有良好的可扩展性。
1.一种基于异步唤醒调度的无线传感器网络数据采集方法,其特征在于所述的数据采集方法包括以下步骤:步骤1:节点在发起数据采集过程之前需要先加入网络,节点加入网络时,节点侦听信道一段时间,接收邻居节点的信标帧,更新邻居列表;步骤2:节点在加入网络后,如果没有数据包需要发送,进入步骤2-1,如果有数据要发送,节点发起数据采集过程,进入步骤2-2;步骤2-1:节点通过伪随机数发生器计算下一次唤醒时间后启动唤醒定时器,然后进入休眠状态,待启动唤醒定时器超时后,节点唤醒,广播信标帧;步骤2-2:节点计算所有离基站跳数小于本节点的邻居节点的唤醒时间,并选择最先唤醒的邻居节点作为转发节点,等待该转发节点唤醒,接收其广播的信标帧后,向其发送数据;步骤3:转发节点在接收到数据包后,向发送节点发送确认帧,如果本节点不是基站则进入步骤3-1;如果本节点是基站,则进入步骤3-2;步骤3-1:把数据缓存在发送队列中,进入步骤2-2;步骤3-2:把收到的数据包交付给应用层,至此,数据采集过程结束。
2.根据权利要求1的基于异步唤醒调度的无线传感器网络数据采集方法,其特征在于步骤1所述的信标帧包含节点的唤醒调度信息和离基站的跳数。
3.根据权利要求1的基于异步唤醒调度的无线传感器网络数据采集方法,其特征在于步骤1所述的更新邻居列表具体包括如下步骤:步骤A:节点从信标帧中提取发送该信标帧的邻居节点的唤醒调度参数和离基站的跳数,并保存到邻居列表中,步骤B:节点比较本节点离基站的跳数与发送该信标帧的邻居节点离基站的跳数n,当本节点离基站的跳数大于n,则节点把自身离基站的跳数设置为n+1。
技术领域本发明涉及在多跳无线传感器网络中基站从传感器节点采集数据所采用的传输协议,尤其涉及采用周期性睡眠唤醒机制作为节能手段的无线传感器网络。
背景技术无线传感器网络一般采用电池供电,能耗是无线传感器网络的重要指标,它决定着网络的寿命。为了节省能量,一般无线传感器网络都采用周期性睡眠唤醒机制。但该机制引入了睡眠延时问题,即发送节点必须等待目标节点唤醒后才能发送数据。在多跳网络中,每跳的睡眠延时导致了端到端的延时非常大,这使得无线传感器网络无法被应用到一些延时敏感的应用领域。数据采集是指传感节点把数据发送到采集终端,即基站,以供进一步分析利用。数据采集是无线传感器网络的主要数据传输方式,因此减少数据包从传感节点到基站的采集延时对提升无线传感器网络性能具有重要意义。数据采集的传输方式是一种一对多的传输方式,数据流向固定(从传感节点到基站)。目前减少采集延时的方法主要有两种,一种方法是多跳预约,即同步所有节点的唤醒时间,在唤醒期源节点通过发送多跳预约包进行链路预约,被预约的节点在睡眠期保持唤醒。另一种方法梯度唤醒,即节点在下一跳节点唤醒时间前唤醒,这样,当本节点在唤醒期收到数据包,只需等待很短的时间,下一跳的节点很快就会唤醒,便可以继续转发数据包。但以上方法均需要全网同步,全网同步会引入很大的能量开销,而且不利于大规模组网。
发明内容 技术问题:xa0针对上述问题,本发明提供一种基于异步唤醒调度的无线传感器网络数据采集方法,本发明的目的是在减少无线传感器网络采集延时的同时不引入额外的同步开销。
技术方案:xa0本发明的一种基于异步唤醒调度的无线传感器网络数据采集方法包括以下步骤:步骤1:节点在发起数据采集过程之前需要先加入网络,节点加入网络时,节点侦听信道一段时间,接收邻居节点的信标帧,更新邻居列表;步骤2:节点在加入网络后,如果没有数据包需要发送,进入步骤2-1,如果有数据要发送,节点发起数据采集过程,进入步骤2-2;步骤2-1:节点通过伪随机数发生器计算下一次唤醒时间后启动唤醒定时器,然后进入休眠状态,待启动唤醒定时器超时后,节点唤醒,广播信标帧;步骤2-2:节点计算所有离基站跳数小于本节点的邻居节点的唤醒时间,并选择最先唤醒的邻居节点作为转发节点,等待该转发节点唤醒,接收其广播的信标帧后,向其发送数据;步骤3:转发节点在接收到数据包后,向发送节点发送确认帧,如果本节点不是基站则进入步骤3-1;如果本节点是基站,则进入步骤3-2;步骤3-1:把数据缓存在发送队列中,进入步骤2-2;步骤3-2:把收到的数据包交付给应用层,至此,数据采集过程结束。其中:步骤1所述的信标帧包含节点的唤醒调度信息和离基站的跳数。步骤1所述的更新邻居列表具体包括如下步骤:步骤A:节点从信标帧中提取发送该信标帧的邻居节点的唤醒调度参数和离基站的跳数,并保存到邻居列表中,步骤B:节点比较本节点离基站的跳数与发送该信标帧的邻居节点离基站的跳数n,当本节点离基站的跳数大于n,则节点把自身离基站的跳数设置为n+1。
有益效果:本发明由于采取以上技术方案,其具有以下优点:1.xa0xa0xa0xa0xa0xa0减少了采集延时的同时不需要增加额外的同步开销。2.xa0xa0xa0xa0xa0xa0具有良好的可扩展性,网络密度增大不会使系统性能下降。
附图说明图1示出了信标帧的帧结构;图2示出了节点加入网络的的流程图;图3示出了节点发送数据包的流程图。
具体实施方式为实现上述目的,本发明采取以下技术方案:1.节点发起数据采集过程前在加入网络时通过侦听邻居节点信标帧获知邻居节点的唤醒调度参数。2.节点通过伪随机数发生器产生自身唤醒调度,并通过伪随机数发生器和邻居节点的唤醒调度参数可以计算邻居节点的唤醒时间。3.节点根据邻居节点离基站的跳数确定自身离基站的跳数,并在信标帧中包含该信标帧的发送节点离基站的跳数。4.节点维护一个邻居列表,当节点有数据要向基站发送,则发起数据采集过程,节点计算邻居列表中所有离基站跳数小于本节点的邻居节点的唤醒时间,并选择最先唤醒的邻居节点作为转发节点,进行数据转发。5.转发节点收到数据包后缓存数据包,计算邻居列表中所有离基站跳数小于本节点的邻居节点的唤醒时间,并选择最先唤醒的邻居节点作为下一个转发节点继续进行数据转发,直到数据包被转发至基站,数据采集过程结束。具体如下:步骤1:节点在发起数据采集过程之前需要先加入网络,节点加入网络时,节点侦听信道一段时间,接收邻居节点的信标帧,更新邻居列表。信标帧包含节点的唤醒调度信息和离基站的跳数。更新邻居列表具体过程如下:节点首先从信标帧中提取发送该信标帧的邻居节点的唤醒调度参数和离基站的跳数,并保存到邻居列表中。接着,节点比较本节点离基站的跳数与发送该信标帧的邻居节点离基站的跳数n,当本节点离基站的跳数大于n,则节点把自身离基站的跳数设置为n+1。步骤2:节点在加入网络后,如果没有数据包需要发送,进入步骤2-1,如果有数据要发送,节点发起数据采集过程,进入步骤2-2;步骤2-1:节点通过伪随机数发生器计算下一次唤醒时间后启动唤醒定时器,然后进入休眠状态,待启动唤醒定时器超时后,节点唤醒,广播信标帧;步骤2-2:节点计算所有离基站跳数小于本节点的邻居节点的唤醒时间,并选择最先唤醒的邻居节点作为转发节点,等待该转发节点唤醒,接收其广播的信标帧后,向其发送数据;步骤3:转发节点在接收到数据包后,向发送节点发送确认帧,如果本节点不是基站则进入步骤3-1;如果本节点是基站,则进入步骤3-2;步骤3-1:把数据缓存在发送队列中,进入步骤2-2;步骤3-2:把收到的数据包交付给应用层,至此,数据采集过程结束。xa0已加入网络的节点通过伪随机数发生器生成自身唤醒调度,伪随机发生器的随机算法采用线性同余法,即每个随机数的产生是通过以下方式产生xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0xa0
![]()
ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="145"/>xa0xa0xa0xa0xa0xa0xa0式(1)其中
![]()
ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="14"/>、
![]()
ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="13"/>、
![]()
ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="18"/>的取值有多个组合,只要伪随机周期足够长。
![]()
ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="20"/>称伪随机数发生器的种子,在本发明中
![]()
ntent="drawing" img-format="jpg" inline="no" orientation="portrait" wi="18"/>为节点的ID号。采用伪随机数发生器来生成节点的唤醒调度,可以避免节点间的控制包交互开销。邻居节点只要收到该节点的信标帧,就可以根据信标帧里的伪随机数种子和收到该信标帧的时间来计算节点下一次唤醒的时间。由于采用了伪随机唤醒调度,所以节点的唤醒时间是不一致的。已加入网络的节点在每个唤醒期开启射频后立刻发送信标帧。图1示出了信标帧的帧结构,包括以下字段:Length:帧长度;FCF:帧控制域;Src:源地址,即发送该信标帧的节点的地址;Hop:该节点离基站的跳数;Wakeup:唤醒调度参数,即本节点当前伪随机数发生器所用种子;FCS:前向纠错码,用于数据包校验。在本发明所涉及的网络协议中,信标帧有多个作用,包括在数据传输过程中告诉发送节点接收节点已经准备就绪;包括为未加入网络的节点提供网络拓扑信息,帮助期建立邻居列表。图2示出了节点加入网络的的流程图。未加入网络的节点在加入网络时保持唤醒至少一个最长睡眠周期,通过侦听邻居节点信标帧获知邻居节点的唤醒调度参数。节点维护一个邻居列表,只要接收到信标帧,便更新邻居列表中对应表项。节点根据邻居节点离基站的跳数确定自身离基站的跳数,并在信标帧中包含该信标帧的发送节点离基站的跳数。图3示出了节点发送数据包的流程图。当节点有数据要向基站发送,节点计算邻居列表中所有离基站跳数小于本节点的邻居节点的唤醒时间,并选择最先唤醒的邻居节点作为转发节点,设定唤醒定时器,等待该转发节点唤醒。当定时器超时,节点开启射频收发器,等待接收转发节点的信标帧,如果接收成功,则立刻发送数据包。转发节点在正确接收数据包后回复给发送节点一个确认帧,至此通信完毕,发送节点与转发节点均关闭射频收发器,进入休眠。如果发送节点在发送完数据包后等待一段时间仍未收到转发节点的确认帧,则表面发生丢包,此时发送节点重新计算下一个最早唤醒的下一跳节点,重复本数据发送过程。由于节点间不进行同步,且采用伪随机唤醒调度,因此在网络中同一跳的节点有很大的概率在不同的时间唤醒,本发明通过选择最早唤醒的节点作为转发节点进行数据转发,可以有效降低采用周期性睡眠带来的延时,而当网络密度增加,采用本发明的系统能获得更优的性能。而对于本领域的技术人员而言,随着技术的进步,显然可以各种方式来实现本发明的概念。